Amazon S3のライフサイクルポリシーでオブジェクトをGlacierに移行して保管後に削除する
概要
AmazonS3でログなどを長期保管する際、コストが気になるかと思います。
ここでは、ライフサイクルポリシーを設定して、指定日数後にオブジェクトをGlacierに移行し、 さらにGlacierで保管後に削除する方法を記載したいと思います。
設定方法
設定方法は幾つかあります。 ここではAWSコンソールによる方法と、AWS CLIから設定する方法を記載します。
コンソールによる設定方法
まずライフサイクルポリシーを設定したいバケットをクリックし、「管理」タブをクリックします。 「ライフサイクル」をクリックし、その下の「+ライフサイクルルールの追加」を押下します。
ライフサイクルルールの入力画面に、ルール名を入力します。 ここでは「Glacierに1日で移行してその1日後に削除」というルールを作成してみます。 このルールを設定すると、S3にログが格納されてから、1日後にGlacierに移行され、さらにその1日後(つまりログが最初に格納されてから2日後)に削除されることとなります。 (なお、基準時間が0時0分 (GMT) で定められており、0時0分 (GMT)を跨いだ時点から日数がカウントされます。)
さらに、その下の「ルールスコープを選択」で、特定のプレフィックスやタグにファイルを限定して、ルールを適用することもできます。 特定の文字列が含まれる名前のファイルのみ1日後に削除したいといった設定ができます。 ここでは、「バケット内のすべてのオブジェクトに適用」を選択し、制限はしない設定をします。
ストレージクラスの移行について、適用するバージョンにチェックをして、移行の日数を指定します。 ここでは「現行バージョン」を指定しています。 「オブジェクト作成」のリストで「Glacierへの移行の期限」を選択、オブジェクト作成からの日数(ここでは1日)を指定します。
次に、失効の設定で、日数を指定します。ここはファイルが格納された日から削除までの日数を入力します。 そのため、今回だと2日になります。
不完全なマルチパートアップロードのクリーンアップもこちらで日数の設定ができます。
内容を確認して「保存」を押下すると、以下のようにライフサイクルルールが作成され、有効のチェックが入ります。
これで、設定できました。
ルールを無効化したい場合は、対象の「ライフサイクルルール」を選択して、「アクション」から「ライフサイクルルールを無効にする」を押下、確認を押下すると、有効のチェックが外れて無効化ができます。
CLIから設定する方法
JSONで設定ファイル(lifecycle.json)を作成します。
{ "Rules": [ { "Filter": { "Prefix": "documents/" }, "Status": "Enabled", "Transitions": [ { "Days": 1, "StorageClass": "GLACIER" } ], "Expiration": { "Days": 2 }, "ID": "ExampleRule" } ] }
以下のAWS CLIコマンドを実行して、バケットにライフサイクル設定を指定します。
$ aws s3api put-bucket-lifecycle-configuration --bucket
BUCKET_NAME
--lifecycle-configuration file://lifecycle.json
無事設定されているかは以下のコマンドで確認します。
$ aws s3api get-bucket-lifecycle-configuration --bucket
BUCKET_NAME
以下のように設定内容がJSONで参照できていれば、設定完了です。
参照
S3 バケットのライフサイクルポリシーを作成する方法
AWS CLI を使用してライフサイクル設定を指定する
Amazon S3でオブジェクトの有効期限を設定できるようになりました
Amazon S3のオブジェクト移行・削除タイミングを調べてみた
Amazon S3オブジェクトのライフサイクルをAWS CLIから設定する